Various operating systems (OS) and audio apparatus have been developed to support portable devices that we see today. Typically, an audio apparatus for a portable device includes one or more High Level Audio Libraries (HLALs) and/or one or more Low Level Audio Libraries (LLALs). These audio libraries can be called by various applications running on an OS of the portable device, to generate human-audible sounds. The HLALs provide a wide variety of audio generation tools, for example, such as music playback. On the other hand, the LLALs provide various ways to generate and manipulate audio, depending on inputs provided by a user via a direct manipulation interface.
FIG. 1 (Prior Art) is a schematic illustration of a conventional audio apparatus for a portable device. The conventional audio apparatus includes an audio engine 102, an HLAL 104, an LLAL 106, an audio driver 108, an audio adapter 110, and an audio endpoint 112. The audio engine 102 may reside in an OS space, as shown in FIG. 1. The audio driver 108 may be software-enabled in a kernel. The audio driver 108 is interfaced with the audio endpoint 112 through the audio adapter 110. The audio adapter 110 may be hardware, such as a plug or a bus, while the audio endpoint 112 may be hardware, such as a speaker or a headphone.
Let us consider, for example, that an application (not shown in FIG. 1) is running on an OS of the portable device. The application may, for example, be a gaming application that may require generation of human-audible sounds during playing of a game. Let us also consider that the application calls the audio engine 102 to generate human-audible sounds via the conventional audio apparatus. In some cases, the audio engine 102 may be a part of the application itself.
Depending on type of audio processing to be performed, the audio engine 102 may:
(a) call the LLAL 106 directly, or
(b) call the HLAL 104, which may then generate instructions for producing digital audio data, and call the LLAL 106.
Subsequently, the LLAL 106 may generate, modify or pass through the digital audio data to the audio driver 108. Consequently, the audio driver 108 controls the audio adapter 110 and/or the audio endpoint 112 to generate acoustic audio signals corresponding to the digital audio data.
The audio engine 102 acts as an interface between the application and the audio apparatus. Optionally, the audio engine 102 could simply be a routine of the application calling the HLAL 104 or the LLAL 106. Alternatively, the audio engine 102 could be a full-featured sub-program of the application responsible for one or more of:
(a) reading and/or writing the digital audio data,
(b) performing Digital Signal Processing (DSP) on the digital audio data, and/or
(c) mixing multiple streams of the digital audio data into a single audio stream to be rendered into human-audible sounds.
The audio engine 102 may be either created by an author of the application, or licensed from a third party. In many instances, the audio engine 102 may not provide any interface to capture the digital audio data generated by the conventional audio apparatus.
Conventional techniques for facilitating such audio capturing require modifying the application and/or the audio engine 102 to include audio capturing capabilities. For this purpose, an additional software module has to be included as a part of the application. In addition, the audio engine 102 has to be modified to call the additional software module to capture audio during the execution of the application.
However, these conventional techniques suffer from a number of disadvantages. Firstly, the application and/or the audio engine 102 are required to be modified extensively. Secondly, making such extensive modifications is difficult, time consuming and tedious. Thirdly, in instances where the audio engine 102 is licensed from a third party, source code of the audio engine 102 is often closed, and, therefore, cannot be modified by the author of the application. Fourthly, the additional software module has to be executed upon computing hardware of the portable device during the execution of the HLAL 104 and/or the LLAL 106. This leads to potential performance degradation of the application.
Therefore, there exists a need for an audio apparatus for a portable device that is capable of facilitating audio capturing in a transparent manner.